home *** CD-ROM | disk | FTP | other *** search
/ Aminet 4 / Aminet 4 - November 1994.iso / aminet / comm / ums / ums109_1.lha / Tools / SelectMail.LHA / SelectMail / SelectMail.mod < prev   
Text File  |  1993-04-04  |  6KB  |  177 lines

  1. (* ------------------------------------------------------------------------
  2.   :Program.       SelectMail
  3.   :Contents.      selects all messages addressed to a certain user
  4.   :Author.        Martin Horneffer [mh]
  5.   :Address.       Snail Mail:              EMail:
  6.   :Address.       Warmweiherstraße 18      UUCP: mh@umshq.adsp.sub.org
  7.   :Address.       D-5100 Aachen            FIDO: 2:242/7.9
  8.   :History.       v?.? [mh]  15-Apr-92
  9.   :History.       v1.0 [kai] 04-Apr-93 adepted to new interfaces
  10.   :Copyright.     Public Domain
  11.   :Language.      Oberon
  12.   :Translator.    AMIGA OBERON v3.01d
  13.   :Imports.       ums, MHArgs
  14. ------------------------------------------------------------------------ *)
  15. MODULE SelectMail;
  16.  
  17. IMPORT ums, MHArgs, io, u:Utility, sys:SYSTEM, NoGuru;
  18.  
  19. VAR
  20.   login        : LONGINT;
  21.   cfg        : MHArgs.Config;
  22.   name,pwd,sname: ARRAY 256 OF CHAR;
  23.  
  24.   result    : LONGINT;
  25.  
  26. PROCEDURE CheckErr();
  27.   VAR err: INTEGER; txt:ums.STRPTR;
  28.   BEGIN
  29.     err := ums.ErrNum( login );
  30.     IF err # ums.ok THEN
  31.       io.WriteString("UMS-error:");
  32.       io.WriteInt( err, 3);
  33.       io.WriteString(", '");
  34.       txt := ums.ErrTxt( login );
  35.       io.WriteString(txt^);
  36.       io.WriteString("'\n");
  37.       HALT(20);
  38.     END;
  39.   END CheckErr;
  40.  
  41. BEGIN
  42.   cfg := MHArgs.OpenConfig( "NAME/A,PASSWORD/A,SELECT-NAME","Select Mail 1.0 - © 4.4.1992 by Martin Horneffer\n"
  43.                             "Select messages addressed to a certain user.\n\n"
  44.                             "name, password : your name and password for UMS.\n"
  45.                             "   select-name : select all messages that are addressed to this user.\n"
  46.                             "                 This is done by the 'to'-field as well as by threads.\n"
  47.                             "                 Default is same as 'name'\n"
  48.                             "\o$VER: SelectMail 1.0 (4.4.93)\n\r", NIL);
  49.  
  50.   IF cfg = NIL THEN  HALT(20)  END;
  51.   IF cfg.GetString( "NAME", name) & cfg.GetString( "PASSWORD", pwd)  THEN
  52.     IF ~cfg.GetString( "SELECT-NAME", sname) THEN  sname := name  END;
  53.  
  54.     login := ums.Login( name, pwd);
  55.     IF login = 0 THEN
  56.       io.WriteString("login failure\n");
  57.     ELSE
  58.  
  59.     (* NOTE: since we just logged in all local flags are cleared.    *)
  60.     (*       Usually you'll have to clear them by hand before using. *)
  61.  
  62.  
  63.     (* set local flag 0 on all new messages *)
  64.  
  65.     io.WriteString("looking for new messages: ");
  66.     result := ums.UMSSelectTags( login,
  67.       ums.tagSelMask,        LONGSET{ums.ViewAccess,ums.postPoned,ums.Old},
  68.       ums.tagSelMatch,        LONGSET{ums.ViewAccess},
  69.  
  70.       ums.tagSelWriteLocal,    1,
  71.       ums.tagSelSet,        LONGSET{0},
  72.       ums.tagSelUnset,        LONGSET{},
  73.       u.done);
  74.     io.WriteInt( result, 1);  io.WriteString(" found.\n");
  75.     CheckErr();
  76.  
  77.  
  78.     (* set local flag 1 on all messages with matching TONAME *)
  79.  
  80.     io.WriteString("selecting by name: ");
  81.     result := ums.UMSSelectTags( login,
  82.       ums.tagToName,        sys.ADR(sname),
  83.  
  84.       ums.tagSelWriteLocal,    1,
  85.       ums.tagSelSet,        LONGSET{1},
  86.       ums.tagSelUnset,        LONGSET{},
  87.       ums.tagSelQuick,        1,
  88.       u.done);
  89.     io.WriteInt( result, 1);  io.WriteString(" selected.\n");
  90.     CheckErr();
  91.  
  92.     (* set local flag 4 for the new ones amongst them *)
  93.  
  94.     io.WriteString("  new messages amongst these: ");
  95.     result := ums.UMSSelectTags( login,
  96.       ums.tagSelReadLocal,    1,
  97.       ums.tagSelMask,        LONGSET{0,1},
  98.       ums.tagSelMatch,        LONGSET{0,1},
  99.  
  100.       ums.tagSelWriteLocal,    1,
  101.       ums.tagSelSet,        LONGSET{4},
  102.       ums.tagSelUnset,        LONGSET{},
  103.       ums.tagSelQuick,        1,
  104.       u.done);
  105.     io.WriteInt( result, 1);  io.WriteString(".\n");
  106.     CheckErr();
  107.  
  108.  
  109.     (* set local flag 2 on all messages with matching FROMNAME *)
  110.  
  111.     io.WriteString("looking for messages written by you: ");
  112.     result := ums.UMSSelectTags( login,
  113.       ums.tagFromName,        sys.ADR(sname),
  114.  
  115.       ums.tagSelWriteLocal,    1,
  116.       ums.tagSelSet,        LONGSET{2},
  117.       ums.tagSelUnset,        LONGSET{},
  118.       ums.tagSelQuick,        1,
  119.       u.done);
  120.     io.WriteInt( result, 1);  io.WriteString(" found.\n");
  121.     CheckErr();
  122.  
  123.     (* set local flag 3 on all replies to  messages with flag 2 *)
  124.  
  125.     io.WriteString("selecting replies to your msgs: ");
  126.     result := ums.UMSSelectTags( login,
  127.       ums.tagSelReadLocal,    1,
  128.       ums.tagSelParent,        1,
  129.       ums.tagSelMask,        LONGSET{2},
  130.       ums.tagSelMatch,        LONGSET{2},
  131.  
  132.       ums.tagSelWriteLocal,    1,
  133.       ums.tagSelSet,        LONGSET{3},
  134.       ums.tagSelUnset,        LONGSET{},
  135.       ums.tagSelQuick,        1,
  136.       u.done);
  137.     io.WriteInt( result, 1);  io.WriteString(" selected.\n");
  138.     CheckErr();
  139.  
  140.     (* set local flag 4 for the new ones amongst them *)
  141.  
  142.     io.WriteString("  new messages amongst these: ");
  143.     result := ums.UMSSelectTags( login,
  144.       ums.tagSelReadLocal,    1,
  145.       ums.tagSelMask,        LONGSET{0,3},
  146.       ums.tagSelMatch,        LONGSET{0,3},
  147.  
  148.       ums.tagSelWriteLocal,    1,
  149.       ums.tagSelSet,        LONGSET{4},
  150.       ums.tagSelUnset,        LONGSET{},
  151.       ums.tagSelQuick,        1,
  152.       u.done);
  153.     io.WriteInt( result, 1);  io.WriteString(".\n");
  154.     CheckErr();
  155.  
  156.  
  157.     (* set user-flag 7 on all messages with local flag 4 set *)
  158.  
  159.     io.WriteString("totally selected: ");
  160.     result := ums.UMSSelectTags( login,
  161.       ums.tagSelReadLocal,    1,
  162.       ums.tagSelMask,        LONGSET{4},
  163.       ums.tagSelMatch,        LONGSET{4},
  164.  
  165.       ums.tagSelSet,        LONGSET{ums.selected},
  166.       ums.tagSelUnset,        LONGSET{},
  167.       u.done);
  168.     io.WriteInt( result, 1);  io.WriteString(".\n");
  169.     CheckErr();
  170.  
  171.     END;
  172.   END;
  173.  
  174. CLOSE
  175.   IF login # 0 THEN  ums.Logout(login)  END;
  176. END SelectMail.
  177.